﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Dominio;
using Servicios;


namespace EstadisticaProduce.Acuicultura
{
    public partial class frmMateriaPrima : System.Web.UI.Page
    {
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                hdnperiodo.Value = "201112";
                hdncodestablecimiento.Value = "1";
                hdncodempresa.Value = "00001";
                hdncodregistro.Value = "0";
                hdnaccion.Value = string.Empty;

                cargaEspecie(-1);
                cargaGrilla();
            }
        }


        private void cargaGrilla() { 
        
        try
            {

                decimal  COD_COSECHAPROPIA = -1;
                string COD_EMPRESA = hdncodempresa.Value;
                decimal COD_ESTABLECIMIENTO = Convert.ToDecimal(hdncodestablecimiento.Value);

                Hashtable ht = new Hashtable();
                ht.Add("COD_COSECHAPROPIA", COD_COSECHAPROPIA);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_ESTABLECIMIENTO", COD_ESTABLECIMIENTO);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaCosechaPropia(ht);
                if (lst.Count() == 0)
                {
                    pnlMensaje.Visible = true;
                    lblMensaje.Text = "Aún no se han registrado datos";
                }
                else
                {
                    pnlMensaje.Visible = false;
                    lblMensaje.Text = string.Empty;
                    
                    gvRegistro.DataSource = lst;
                    gvRegistro.DataBind();
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;

            }
        }

        protected void btnGraba_Click(object sender, EventArgs e)
        {
            Int32 iresultado = 0;
            string saccion = hdnaccion.Value;
            string COD_PERIODO = hdnperiodo.Value;
            decimal COD_COSECHAPROPIA = Convert.ToDecimal(hdncodregistro.Value);
            string COD_EMPRESA = hdncodempresa.Value ;
            decimal COD_ESTABLECIMIENTO = Convert.ToDecimal(hdncodestablecimiento.Value) ;
            decimal COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedItem.Value);
            decimal CAN_PESOPROMEDIO = Convert.ToDecimal(txtPesoPromedio.Text);
            decimal NUM_TALLAPROMEDIO = Convert.ToDecimal(txtTallaPromedio.Text);
            decimal VOL_COSECHAPROPIA = Convert.ToDecimal(txtVolumen.Text);
            decimal VAL_COSECHAPROPIA = Convert.ToDecimal(txtValor.Text);
            decimal CAN_REFRIGERADO = Convert.ToDecimal(txtRefrigerado.Text);
            decimal CAN_CURADO = Convert.ToDecimal(txtCurado.Text);
            decimal CAN_VIVO = Convert.ToDecimal(txtVivo.Text);
            decimal CAN_CONGELADO = Convert.ToDecimal(txtCongelado.Text);
            decimal CAN_ENLATADO = Convert.ToDecimal(txtEnlatado.Text);

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_COSECHAPROPIA", COD_COSECHAPROPIA);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_ESTABLECIMIENTO", COD_ESTABLECIMIENTO);
                ht.Add("COD_ESPECIE", COD_ESPECIE);
                ht.Add("CAN_PESOPROMEDIO", CAN_PESOPROMEDIO);
                ht.Add("NUM_TALLAPROMEDIO", NUM_TALLAPROMEDIO);
                ht.Add("VOL_COSECHAPROPIA", VOL_COSECHAPROPIA);
                ht.Add("VAL_COSECHAPROPIA", VAL_COSECHAPROPIA);
                ht.Add("CAN_REFRIGERADO", CAN_REFRIGERADO);
                ht.Add("CAN_CURADO", CAN_CURADO);
                ht.Add("CAN_VIVO", CAN_VIVO);
                ht.Add("CAN_CONGELADO", CAN_CONGELADO);
                ht.Add("CAN_ENLATADO", CAN_ENLATADO);

                if (hdncodregistro.Value != string.Empty && saccion == "EDITAR")
                {
                    iresultado = _consultas.ActualizaCosechaPropia(ht);
                }
                else
                {
                    iresultado = _consultas.InsertaCosechaPropia(ht);
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            limpiaFormulario();
        }

        private void cargaEspecie(decimal _cod_tipo_especie)
        {
            decimal cod_especie = -1;
            decimal cod_tipo_especie = _cod_tipo_especie;
            string des_especie = string.Empty;
            string cod_empresa = hdncodempresa.Value;
            Hashtable ht = new Hashtable();
            ht.Add("cod_especie", cod_especie);
            ht.Add("cod_tipo_especie", cod_tipo_especie);
            ht.Add("des_especie", des_especie);
            ht.Add("cod_empresa", cod_empresa);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

            lst = _consultas.ListaEspecies(ht);
            ddlEspecie.DataSource = lst;
            ddlEspecie.DataTextField = "desespecie";
            ddlEspecie.DataValueField = "codespecie";
            ddlEspecie.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlEspecie, "0", "- Seleccione", 0);
        }

        protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                {
                    GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                    int Index = row.RowIndex;

                    if (e.CommandName == "x_edit")
                    {
                        /*
                         * DataKeys:
                         * cod_cosechapropia,cod_empresa,cod_establecimiento,codespecie,desespecie,cod_tipo_especie,des_tipo_especie,
                         * tallapromedio,pesopromedio,numvolumen,numvalor,idenvio,desvivo,desahumado,descongelado,desfresco
                         */
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_cosechapropia = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_cosechapropia"]);
                        be.cod_empresa = gvRegistro.DataKeys[Index].Values["cod_empresa"].ToString();
                        be.cod_establecimiento = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_establecimiento"]);
                        be.codespecie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codespecie"]);
                        be.desespecie = gvRegistro.DataKeys[Index].Values["desespecie"].ToString();
                        be.cod_tipo_especie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_tipo_especie"]);
                        be.des_tipo_especie = gvRegistro.DataKeys[Index].Values["des_tipo_especie"].ToString();
                        be.tallapromedio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["tallapromedio"]);
                        be.pesopromedio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["pesopromedio"]);
                        be.pesopromedio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["pesopromedio"]);
                        be.numvolumen = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["numvolumen"]);
                        be.numvalor = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["numvalor"]);
                        be.desvivo = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["desvivo"]);
                        be.desahumado = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["desahumado"]);
                        be.descongelado = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["descongelado"]);
                        be.desfresco = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["desfresco"]);
                        be.desenlatado = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["desenlatado"]);
                        limpiaFormulario();
                        cargaFormulario(be);
                    }
                    else
                    {
                        //--ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "Aviso", "alert('Seguro :P');", true);
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_cosechapropia = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_cosechapropia"]);
                        be.cod_empresa = gvRegistro.DataKeys[Index].Values["cod_empresa"].ToString();
                        be.cod_establecimiento = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_establecimiento"]);
                        be.codespecie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codespecie"]);

                        eliminaRegistro(be);
                    }
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.StackTrace.ToString();
                ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
            }
        }

        private void cargaFormulario(domConsultasGenerales _be){
            hdnaccion.Value = "EDITAR";
            hdncodregistro.Value = _be.cod_cosechapropia.ToString();

            cargaEspecie(-1);
            Utilidades.DropDownListSelectValue(ref ddlEspecie, _be.codespecie.ToString());

            txtCurado.Text = _be.desahumado.ToString();
            txtCongelado.Text = _be.descongelado.ToString();
            txtRefrigerado.Text = _be.desfresco.ToString();
            txtVivo.Text = _be.desvivo.ToString();
            txtTallaPromedio.Text = _be.tallapromedio.ToString();
            txtVolumen.Text = _be.numvolumen.ToString();
            txtValor.Text = _be.numvalor.ToString();
            txtPesoPromedio.Text = _be.pesopromedio.ToString();
            txtEnlatado.Text = _be.desenlatado.ToString();
        }

        private void limpiaFormulario() {
            hdnaccion.Value = string.Empty;
            hdncodregistro.Value = string.Empty;
            txtCurado.Text = string.Empty;
            txtCongelado.Text = string.Empty;
            txtRefrigerado.Text = string.Empty;
            txtVivo.Text = string.Empty;
            txtTallaPromedio.Text = string.Empty;
            txtVolumen.Text = string.Empty;
            txtValor.Text = string.Empty;
            txtPesoPromedio.Text = string.Empty;
            txtEnlatado.Text = string.Empty;

            cargaEspecie(-1);
        }

        private void eliminaRegistro(domConsultasGenerales _be)
        {

            decimal COD_COSECHAPROPIA = _be.cod_cosechapropia;
            string COD_EMPRESA = _be.cod_empresa;
            decimal COD_ESTABLECIMIENTO = _be.cod_establecimiento;
            decimal COD_ESPECIE = _be.codespecie;

            Int32 iresultado = 0;
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_COSECHAPROPIA", COD_COSECHAPROPIA);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_ESTABLECIMIENTO", COD_ESTABLECIMIENTO);
                ht.Add("COD_ESPECIE", COD_ESPECIE);

                iresultado = _consultas.EliminaCosechaPropia(ht);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se eliminó el registro correctamente";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }


    }
}